=========================================================================
ISTRUZIONI per il PROGETTO DI RECUPERO anno 2016/17
========================================================================
L'assegnamento prevede la realizzazione di un programma C per la generazione
di forme frattali per accrescimento (utilizzando il modello drop, lo stessa del primo assegnamento e del secondo assegnamento).

La descrizione delle caratteristiche del programma si trova nel file dropPR2017.pdf.

Cosa fare:
(1) implementare le funzioni in myrand.h in un file myrand.c e testarle
(2) implementare le funzioni in drop.h in un file drop.c e testarle
(3) implementare le funzioni in file.h in u nfile file.c e testarle
(4) implementare in main.c il comando drop con le opzioni specificate in dropPR2017.pdf e testarlo
(5) tutti i file sviluppati ed il file con la relazione  devono essere consegnati al docente nel formato "tar" creato automaticamente come descritto piu' sotto
(3) il "tar" deve essere allegato ad una normale mail da inviare a
susanna.pelagatti@unipi.it con oggetto "info17: consegna progetto di recupero"

------------------------------------------------
Estrarre il materiale dal KIT 
------------------------------------------------
Creare una directory temporanea, copiare kit_pr.tar  
nella directory e spostarsi nella directory appena creata. Es.

$$ mkdir PROGETTOR
$$ mv kit_pr.tar PROGETTOR
$$ cd PROGETTOR

S-tarare i file del kit con

$$ tar xvf kit_pr.tar

questo comando crea nella directory corrente una directory "DROP"
con i seguenti file

$$ ls DROP
dropPR2017.pdf		: file contenente le specifiche del progetto e
                          le indicazioni su come procedere
			     (da leggere attentamente)

myrand.h drop.h		: header file che contengono i prototipi
file.h			  delle funzioni da realizzare
			  (NON MODIFICARE)
			  
drop_docenti.c		: file con le due funzioni implementate dai docenti
			  (NON MODIFICARE)

Makefile		: un file che permette l'automatizzazione della
                          compilazione e dei test forniti dai
			  docenti (NON MODIFICARE)
			
README			: questo file

DATA/*			: file per il test automatico (NON MODIFICARE)

test_*.c		: file per il test automatico (NON MODIFICARE)


gruppo-check.pl		: uno script Perl che controlla il formato del file
			  gruppo.txt prima di effettuare la consegna
			  (NON MODIFICARE)

gruppo.txt		: un file di esempio di specifica del gruppo
			  (massimo 2 studenti per gruppo)
			  (deve essere aggiornato con i dati di chi consegna,
			  secondo il formato esemplificato)

========================================================================
ISTRUZIONI per la realizzazione dell'assegnamento
========================================================================

L'assegnamento prevede la realizzazione di alcune funzioni
(le specifiche dettagliate si trovano nei file *.h).

Lo studente deve realizzare le funzioni secondo le specifiche, testandone via
via il funzionamento con delle funzioni main() sviluppate in modo opportuno.

Quando si e' ragionevolmente sicuri della correttezza delle funzioni in base
alle specifiche ed ai test che abbiamo effettuato si puo' passare ai test
automatici contenuti nel Makefile e sviluppati dai docenti.
E' importante non eseguire i test del Makefile
con codice non precedentemente testato perche' in questo caso i
risultati sarebebro di difficile interpretazione e fuorvianti.

I test del Makefile sono:
1) il primo, attivabile dando da shell il comando
"make test1"
testa la funzione  di inizializzazione della martice ed il generatore dei numeri casuali.
Il test non fa altro che eseguire il main() contenuto nel file "test_one.c" che lo studente e' invitato a leggere e comprendere.
2) il secondo test, attivabile dando da shell il comando
"make test2"
testa anche la funzione step() che realizza un passo della
simulazione del frattale su una matrice piuttosto piccola con diverse adiacenze.
Il test non fa altro che eseguire il main() contenuto nel file "test_two.c"
che lo studente e' invitato a leggere e comprendere.
3) il terzo test e' attivabile con
"make test3"
e testa alcune funzioni di conversione degli ostacoli e il loro
piazzamento corretto nella matrice di caduta.
4) il test 4 attivabile con
"make test4"
prova la creazione delle liste si oggetti.
5) il test 5 attivabile con
"make test5"
effettua una simulazione con oggetti e varie adiacenze
6) il test 6 attivabile con
"make test6"
effettua dei test sulle funzioni di scrittura e lettura della matrice su file.


Solo gli elaborati che passano tutti i test possono essere consegnati.
Per effettuare la consegna seguire le istruzioni piu' sotto

------------------
Come procedere --> i passi :
-----------------

1) leggere attentamente dropPR2017.pdf

2) implementare e testare le funzioni nei file *.h

3) testare il software con i test forniti dai
  docenti. 

       $ make test1
       $ make test2
       $ make test3
       $ make test4
       $ make test5
       $ make test6
       

  NOTA: (1) i file drop.c, myrand.c, file.c 
  si devono trovare nella directory DROP/
 
  (2) E' importante che il test fornito dai docenti venga effettuato solo su
  un programma gia' funzionante e testato altrimenti i risultati
  possono essere di difficile interpretazione, fuorvianti o inutili.

4) realizzare main.c e testarlo

5) preparare la documentazione: ovvero commentare adeguatamente i file *.c
   ed inserire un’ intestazione contenente i nomi
   degli sviluppatori ed  una dichiarazione di originalita' 

   /** \file pippo.c
       \author Nino Bixio & Giuseppe Garibaldi
     Si dichiara che il contenuto di questo file e' in ogni sua parte opera
     originale degli  autori.  */


6) aggiornare il file "gruppo.txt" con i nomi e dati degli sviluppatori

7) consegnare il file eseguendo

      bash:~$ make consegna

   e seguendo le istruzioni.

   Il target consegna crea un file tar che deve essere inviato
   all'indirizzo del docente 

   "info17: consegna progetto di recupero"

   Se il make non funziona nell'ambiente in cui state sviluppando, create
   un tar file con all'interno la relazione relazione.pdf, i file file.c,
   main.c, drop.c, myrand.c e il file gruppo.txt ed inviatelo al
   docente come sopra.
   Tutte le consegne verranno confermate con un messaggio entro 2/3
   giorni all'indirizzo da cui e' stata effettuata la consegna. In
   caso questo non si verifichi contattare il docente.
   

---------------------------------------
 NOTE IMPORTANTI: LEGGERE ATTENTAMENTE
---------------------------------------

1) tutti gli elaborati verranno confrontati fra di loro con tool automatici
   per stabilire eventuali situazioni di PLAGIO. Se gli elaborato sono 
   ragionevolmente simili verranno scartati.

2) Chi in sede di orale risulta palesemente non essere l'autore del software
   consegnato in uno degli assegnamenti dovra' ripetere l'esame

3) Tutti i comportamenti scorretti ai punti 1 e 2 verranno segnalati
   ufficialmente al presidente del corso di laurea
